package _99练习;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * @author Administrator
 */
public class Exercise {

    public static void main(String[] args) throws IOException {

        // 综合练习


        // 1.
//		键盘录入一个文件路径，根据文件路径创建File对象
//		如果输入的文件路径对应的文件不存在，则创建该文件。
//		如果输入的文件路径对应的文件已经存在了，则获得文件大小并输出。
//        KeyBoard1();

        // 2.
//		键盘录入一个文件路径，根据文件路径创建文件对象，判断是文件还是文件夹
//		如果是文件，则输出文件的大小
//		如果是文件夹，则计算该文件夹下所有文件大小之和并输出(不包含子文件夹)。
//        KeyBoard2();

        // 3.
//		键盘录入一个文件夹路径，删除该路径下的文件夹及文件夹。
//		提示：如果文件夹里面有文件，则需要先将文件删除才能删除文件夹
//        File f1 = new File("E:\\test");
//        KeyBoard3(f1);

        // * 4.
        // 开发一个批量文件改名工具(终端方式 或 界面)
        // > 批量修改文件名后缀  比如将所有.jpeg图片的 改为  .jpg
        // > 批量添加前缀      比如：1.jpg 批量修改为  pic-1.jpg
//        String path = "E:\\test";
//        Scanner sc = new Scanner(System.in);
//
//        System.out.print("请输入原文件后缀：");
//        String s1 = sc.next();
//        System.out.print("请输入新文件后缀：");
//        String s2 = sc.next();
//        // 修改文件名后缀
//        Rename(s1, s2, path);
//
//        Scanner sc2 = new Scanner(System.in);
//        System.out.print("请输入添加的前缀：");
//        String s3 = sc.next();
//        // 添加前缀
//        addPrefix(s3, path);


        // 5.
//		从控制台循环接收用户录入的学生信息，输入格式为：学号-学生名字
//		将学生信息保存到d盘下面的stu.txt文件中，一个学生信息占据一行数据。
//		当用户输入end时停止输入。
//        String path = "D:\\stu.txt";
//        StuInputDemo(path);


    }

    private static void StuInputDemo(String path) throws IOException {
        FileWriter fw = new FileWriter(path);
        BufferedWriter bw = new BufferedWriter(fw);
        Scanner sc = new Scanner(System.in);
        loop:
        while (true) {
            System.out.print("请输入学生信息：（输入格式为：学号-学生名字）");
            String info = sc.nextLine();
            // 结束程序
            if (info.equals("end")) {
                bw.close();
                break loop;
            }
            bw.write(info + "\n");
        }
    }

    private static void addPrefix(String s, String path) {
        File file = new File(path);

        if (file == null) {
            System.out.println("输入的文件夹下面没有文件！");
            return;
        } else if (!file.exists()) {
            System.out.println("输入的文件夹不存在");
            return;
        }
        // 判断是否是目录文件
        if (file.isDirectory()) {
            File[] flist = file.listFiles();
            for (File f : flist) {
                // 不对目录文件操作
                if (!f.isDirectory()) {
                    String filename = f.getName();
                    f.renameTo(new File(path + "\\" + s + filename));
                }
            }
            System.out.println("重命名完成");
        }
    }

    private static void Rename(String s1, String s2, String path) {
        File file = new File(path);

        if (file == null) {
            System.out.println("输入的文件夹下面没有文件！");
            return;
        } else if (!file.exists()) {
            System.out.println("输入的文件夹不存在");
            return;
        }
        // 判断是否是目录文件
        if (file.isDirectory()) {
            File[] flist = file.listFiles();
            for (File f : flist) {
                // 不对目录文件操作
                if (!f.isDirectory()) {
                    String filename = f.getName();
                    if (filename.contains(s1)) {
//                        System.out.println(filename);
                        // 获取后缀前的文件名
                        String beforeSuffixName = filename.substring(0, filename.lastIndexOf("."));
                        f.renameTo(new File(path + "\\" + beforeSuffixName + s2));
                    }
                }
            }
            System.out.println("重命名完成");
        }
    }

    private static void KeyBoard3(File f) {

        if (f == null || !f.exists()) {
            System.out.println("输入的文件夹路径不存在或格式不正确！");
            return;
        }
        if (f.isDirectory()) {

            File[] fi = f.listFiles();
            for (File file : fi) {
                String fileName = file.getName();
                System.out.println(fileName);
                // 删除该路径下的文件夹及文件夹。
                // 是文件夹，且不为空 则递归删除
                if (file.isDirectory() && file != null) {
                    KeyBoard3(file);
                    //不是文件夹或 文件夹不为空，则直接删除
                } else {
                    file.delete();
                }
                // 删除完文件夹内的所有文件后，最后删除此文件夹
                file.delete();
            }


        }
    }


    private static void KeyBoard2() throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个文件路径：");
        String dir = sc.next();
        // 根据文件路径创建文件对象，
        File f1 = new File(dir);
        // 判断是文件还是文件夹
        // 如果是文件夹，则计算该文件夹下所有文件大小之和并输出(不包含子文件夹)。
        if (f1.isDirectory()) {
            System.out.println("是文件夹");
            String[] f = f1.list();
            int size = 0;
            for (String directory : f) {
                System.out.println("|-" + directory);
                size += directory.length();
            }
            System.out.println("所有文件大小之和：" + size);
        }

        // 如果是文件，则输出文件的大小
        else {
            System.out.println("是文件，大小：" + f1.length());
        }
    }

    private static void KeyBoard1() throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个文件路径：");
        String dir = sc.next();
        // 根据文件路径创建文件对象，
        File f1 = new File(dir);
        // 如果输入的文件路径对应的文件不存在，则创建该文件。
        if (!f1.exists()) {
            System.out.println("文件不存在，创建！");
            f1.createNewFile();
            //如果输入的文件路径对应的文件已经存在了，则获得文件大小并输出。
        } else {
            System.out.println("文件存在，大小为：" + f1.length());
        }

    }

}